package com.springboot.admin.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Arrays;

/************************************************************************
 *
 *    Copyright  Copyright 2021 Google Inc.
 *    File Name: MyDataSourceConfig
 *    Description: 自定义数据源
 *
 *    Version: V1.0
 *    Author: Fuc
 *    Create Time: 2021-01-09
 *
 *************************************************************************/

@Deprecated
//@Configuration
public class MyDataSourceConfig {

  /**
   * 默认的自动配置是判断容器中没有才会配@ConditionalOnMissingBean(DataSource.class)
   *
   * @return
   */
  @ConfigurationProperties("spring.datasource")
  @Bean
  public DataSource dataSource() throws SQLException {
    DruidDataSource druidDataSource = new DruidDataSource();

    /*druidDataSource.setUrl();
    druidDataSource.setUsername();
    druidDataSource.setPassword();*/
    // 加入监控功能
    druidDataSource.setFilters("stat,wall");

    druidDataSource.setMaxActive(10);
    return druidDataSource;
  }

  /**
   * 配置 druid的监控页功能
   *
   * @return
   */
  @Bean
  public ServletRegistrationBean statViewServlet() {
    StatViewServlet statViewServlet = new StatViewServlet();
    ServletRegistrationBean<StatViewServlet> registrationBean =
        new ServletRegistrationBean<>(statViewServlet, "/druid/*");
    registrationBean.addInitParameter("loginUsername", "admin");
    registrationBean.addInitParameter("loginPassword", "123456");
    return registrationBean;
  }

  /**
   * WebStatFilter 用于采集web-jdbc关联监控的数据。
   *
   * @return
   */
  @Bean
  public FilterRegistrationBean webStatFilter() {
    WebStatFilter webStatFilter = new WebStatFilter();

    FilterRegistrationBean<WebStatFilter> filterRegistrationBean =
        new FilterRegistrationBean<>(webStatFilter);
    filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
    filterRegistrationBean.addInitParameter(
        "exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

    return filterRegistrationBean;
  }
}
